#pragma once
#include  <iostream>
#include  <memory>
#include  <vector>
#include  <string>
#include  <algorithm>
#include  "OptimizationContext.h"
class OptimizationStrategy {
public:
    virtual ~OptimizationStrategy() = default;

    // The method to execute the strategy
    virtual bool execute(OptimizationContext & contents) = 0;


    // Get the name of the strategy
    std::string getName() const {
        return m_current_strategy;
    }
    void setCurrentStrategy(std::string strategy) {
        m_current_strategy = strategy;
    }
    // Reset the strategy
    virtual void reset() = 0;
private:
    std::string m_current_strategy;
};
